package com.example.common.utils.bean;


import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;

import java.util.Set;


import java.util.Set;

/**
 * 校验bean对象属性验证
 * 这是一种快速失败的验证模式，一旦发现验证失败立即抛出异常
 * 常用于服务层对输入参数进行合法性校验
 * 确保不符合约束条件的数据不会进入业务逻辑层
 */
public class BeanValidators {
    public static void validateWithException(Validator validator,
                                             Object object,
                                             Class<?>... groups) {
        //调用校验器的 validate 方法对对象进行校验，获取违反约束的结果集合
        Set<ConstraintViolation<Object>> violations = validator.validate(object, groups);
        if (!violations.isEmpty()) {
            //如果存在违反约束的情况，则抛出 ConstraintViolationException 异常，
            // 将所有违反约束的信息传递给上层调用者
            throw new ConstraintViolationException(violations);
        }
    }
}
